package 算法.LeetCode91.每日打卡题目;

import java.util.*;

/**
 * @author: 谢君臣
 * @create: 2021-01-31 20:35
 * @founction: XXXX
 * 对于非负整数 X 而言，X 的数组形式是每位数字按从左到右的顺序形成的数组。例如，如果 X = 1231，那么其数组形式为 [1,2,3,1]。
 * <p>
 * 给定非负整数 X 的数组形式 A，返回整数 X+K 的数组形式。
 * 示例 1：
 * 输入：A = [1,2,0,0], K = 34
 * 输出：[1,2,3,4]
 * 解释：1200 + 34 = 1234
 */
public class day01 {
    public static void main(String[] args) {
        int[] X = {1, 0, 0, 0, 1};
        int k = 999;
        List<Integer> list = addToArrayForm(X, k);
        System.out.println(list.toString());
    }

    public List<Integer> addToArrayForm1(int[] A, int K) {
        List<Integer> res = new ArrayList<Integer>();
        int n = A.length;
        for (int i = n - 1; i >= 0; --i) {
            int sum = A[i] + K % 10;
            K /= 10;
            if (sum >= 10) {
                K++;
                sum -= 10;
            }
            res.add(sum);
        }
        for (; K > 0; K /= 10) {
            res.add(K % 10);
        }
        Collections.reverse(res);
        return res;
    }

    public static List<Integer> addToArrayForm(int[] A, int K) {
        List<Integer> res = new ArrayList<>();
        for (int i = A.length - 1; i >= 0; i--) {
            int temp = A[i] + K % 10;
            K = K / 10;
            if (temp >= 10) {
                K++;
            }
            res.add(temp % 10);
        }
        for (; K > 0; K = K / 10) {
            res.add(K % 10);
        }
        Collections.reverse(res);
        return res;
    }
}
